package cn.edu.wynu.d11_interface_attention;

import cn.edu.wynu.d9_interface_demo.StudentOperatorimpl1;

public class Test2 {
    public static void main(String[] args) {
        // 接口其他注意事项(了解)
        // 1、一个接口继承多个接口，如果多个接口中存在方法签名冲突，则此时不支持多继承。
        // 2、一个类实现多个接口，如果多个接口中存在方法签名冲突，则此时不支持多实现。
        // 3、一个类继承了父类，又同时实现了接口，父类中和接口中有同名的默认方法，实现类会优先用父类的。
        // 4、一个类实现了多个接口，多个接口中存在同名的默认方法，可以不冲突，这个类重写该方法即可。

        Zi zi = new Zi();
        zi.run(); // 父类的run方法执行了
    }
}

// 1、一个接口继承多个接口，如果多个接口中存在方法签名冲突，则此时不支持多继承。
interface I {
    void test1();
}
interface J {
    String test1();
}
/*
这种情况不支持多继承。
interface K extends I, J {

}
*/

// 2、一个类实现多个接口，如果多个接口中存在方法签名冲突，则此时不支持多实现。
/*
class E implements I, J {
    // 这里不能重写test1方法，因为两个接口中都存在test1方法。
}
*/

// 3、一个类继承了父类，又同时实现了接口，父类中和接口中有同名的默认方法，实现类会优先用父类的。
class Fu{
    public void run(){
        System.out.println("===父类的run方法执行了===");
    }
}
interface It{
    default void run(){
        System.out.println("===接口IT中的run方法执行了===");
    }
}
class Zi extends Fu implements It{

}

// 4、一个类实现了多个接口，多个接口中存在同名的默认方法，可以不冲突，这个类重写该方法即可。
interface It1{ // It1接口
    default void test(){
        System.out.println("It1");
    }
}

interface It2{
    default void test(){
        System.out.println("It2");
    }
}

class N implements It1, It2{
    @Override
    public void test() {
        System.out.println("以后就会用自己重写的test方法");
    }
}